package com.yeskery.nut.extend.mcp.server;

import com.yeskery.nut.core.PathMetadata;
import com.yeskery.nut.extend.mcp.core.Resource;
import com.yeskery.nut.extend.mcp.core.schema.ResourceSchema;

import java.util.List;

/**
 * Mcp资源元数据
 * @author sprout
 * 2025-04-18 15:19
 */
public class McpResourceMetadata extends McpExecuteMetadata implements McpResourceDatable {

    /** 资源对象 */
    private Resource resource;

    /** 路径元数据 */
    private PathMetadata pathMetadata;

    /** 参数名称 */
    private List<String> parameterNames;

    /** 是否是文本内容 */
    private Boolean isTextContent;

    /** 数据 */
    private String data;

    /**
     * 获取资源对象
     * @return 资源对象
     */
    public Resource getResource() {
        return resource;
    }

    /**
     * 设置资源对象
     * @param resource 资源对象
     */
    public void setResource(Resource resource) {
        this.resource = resource;
    }

    /**
     * 设置数据
     * @param data 数据
     */
    public void setData(String data) {
        this.data = data;
    }

    @Override
    public String getData() {
        return data;
    }

    /**
     * 获取路径元数据
     * @return 路径元数据
     */
    public PathMetadata getPathMetadata() {
        return pathMetadata;
    }

    /**
     * 设置路径元数据
     * @param pathMetadata 路径元数据
     */
    public void setPathMetadata(PathMetadata pathMetadata) {
        this.pathMetadata = pathMetadata;
    }

    /**
     * 获取参数名称
     * @return 参数名称
     */
    public List<String> getParameterNames() {
        return parameterNames;
    }

    /**
     * 设置参数名称
     * @param parameterNames 参数名称
     */
    public void setParameterNames(List<String> parameterNames) {
        this.parameterNames = parameterNames;
    }

    /**
     * 是否是资源
     * @return 资源
     */
    public boolean isResource() {
        return resource.getResource() instanceof ResourceSchema.Resource;
    }

    /**
     * 是否是文本内容
     * @return 文本内容
     */
    public Boolean getTextContent() {
        return isTextContent;
    }

    /**
     * 设置文本内容
     * @param textContent 文本内容
     */
    public void setTextContent(Boolean textContent) {
        isTextContent = textContent;
    }
}
